bitkeeper revision 1.825.2.1 (4062d28avHqOBupTrfJcONXWeibf9A)
authoriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Thu, 25 Mar 2004 12:37:30 +0000 (12:37 +0000)
committeriap10@tetris.cl.cam.ac.uk <iap10@tetris.cl.cam.ac.uk>
Thu, 25 Mar 2004 12:37:30 +0000 (12:37 +0000)
grand unification of shadow table stuff

17 files changed:
1  2 
.rootkeys
BitKeeper/etc/ignore
xen/arch/i386/domain_page.c
xen/arch/i386/process.c
xen/arch/i386/traps.c
xen/common/debug.c
xen/common/domain.c
xen/common/kernel.c
xen/common/memory.c
xen/common/perfc.c
xen/include/asm-i386/config.h
xen/include/asm-i386/page.h
xen/include/asm-i386/processor.h
xen/include/xen/mm.h
xen/include/xen/perfc.h
xen/include/xen/perfc_defn.h
xen/net/dev.c

diff --cc .rootkeys
index e61ecf8776b4dd7c45a4e278a592f8b2de143da1,d28d693e5da9cbeac62967f9b7ed08ff7727ff64..b8b93e6cc9be3165715a01d3c30ec8598fb4b73e
+++ b/.rootkeys
  4051bcecFeq4DE70p4zGO5setf47CA xen/common/physdev.c
  4006e659i9j-doVxY7DKOGU4XVin1Q xen/common/rbtree.c
  3ddb79bdHqdQpATqC0rmUZNbsb6L6A xen/common/resource.c
 +40589968dD2D1aejwSOvrROg7fOvGQ xen/common/sched_bvt.c
 +40589968be_t_n0-w6ggceW7h-sx0w xen/common/sched_rrobin.c
  3e397e6619PgAfBbw2XFbXkewvUWgw xen/common/schedule.c
+ 405b8599xI_PoEr3zZoJ2on-jdn7iw xen/common/shadow.c
  3ddb79bdB9RNMnkQnUyZ5C9hhMSQQw xen/common/slab.c
  3ddb79bd0gVQYmL2zvuJnldvD0AGxQ xen/common/softirq.c
  3e7f358awXBC3Vw-wFRwPw18qL1khg xen/common/string.c
  3ddb79c4R4iVwqIIeychVQYmIH4FUg xen/include/scsi/scsi_ioctl.h
  3ddb79c4yw_mfd4Uikn3v_IOPRpa1Q xen/include/scsi/scsicam.h
  3ddb79c4HKPMLvDBP9LxzPi_szVxGA xen/include/scsi/sg.h
 -3e397e66m2tO3s-J8Jnr7Ws_tGoPTg xen/include/xeno/ac_timer.h
 -3ddb79c0nTsjSpVK4ZVTI9WwN24xtQ xen/include/xeno/blk.h
 -3ddb79c0dVhTHLsv6CPTf4baKix4mA xen/include/xeno/blkdev.h
 -3ddb79c18ePBgitnOs7GiOCFilODVw xen/include/xeno/blkpg.h
 -3ddb79c1oOjpQbp68MW7yiUpoi-S-w xen/include/xeno/brlock.h
 -3ddb79c1x7Ie3kifu7dQRx8y7HVyvA xen/include/xeno/byteorder/big_endian.h
 -3ddb79c1qFXOEX1eD0yXJ_gsGkUt8w xen/include/xeno/byteorder/generic.h
 -3ddb79c1VbwFALNpgx6uC_iZKFHD-A xen/include/xeno/byteorder/little_endian.h
 -3ddb79c1VvNRMM35bpdZMekirCXP-A xen/include/xeno/byteorder/pdp_endian.h
 -3ddb79c116WbJV8bwGZXFFJy_GNNvw xen/include/xeno/byteorder/swab.h
 -3ddb79c1pwmlw8VXW8aaSKAVGVmjDA xen/include/xeno/byteorder/swabb.h
 -3ddb79c0c0cX_DZE209-Bb-Rx1v-Aw xen/include/xeno/cache.h
 -3e9c248aEG_nCngztiFmv5CfayNkcA xen/include/xeno/cdrom.h
 -3f840f12CkbYSlwMrY2S11Mpyxg7Nw xen/include/xeno/compiler.h
 -3ddb79c259jh8hE7vre_8NuE7nwNSA xen/include/xeno/config.h
 -3eb165e0eawr3R-p2ZQtSdLWtLRN_A xen/include/xeno/console.h
 -3f0c428eIwGr7n9fj4FkBdX2YvA_Rw xen/include/xeno/crc32.h
 -3ddb79c1V44RD26YqCUm-kqIupM37A xen/include/xeno/ctype.h
 -3ddb79c05DdHQ0UxX_jKsXdR4QlMCA xen/include/xeno/delay.h
 -3ddb79c1uaWQZj551j1O0B5z8AnHOg xen/include/xeno/elevator.h
 -3ddb79c0HIghfBF8zFUdmXhOU8i6hA xen/include/xeno/errno.h
 -3ddb79c0rMjudDKkJku_mkm0J-BZgw xen/include/xeno/etherdevice.h
 -3ddb79c0T3X07lFnM9OSE-W5bqIDSQ xen/include/xeno/ethtool.h
 -3ddb79c1W0lQca8gRV7sN6j3iY4Luw xen/include/xeno/event.h
 -3ddb79c1J4I_AjNflZL-1c1jOIlSyg xen/include/xeno/genhd.h
 -3ddb79c1i-chIoeniqgYwMM3EgaR5w xen/include/xeno/hdreg.h
 -3ddb79c12GuUuaxBKiMuwf-Qvuwpng xen/include/xeno/hdsmart.h
 -3ddb79c0MM575N4YvMSiw9EqKH4JDA xen/include/xeno/ide.h
 -3ddb79c1yHLp08JhgPxIMcZ8DwN9hg xen/include/xeno/if.h
 -3ddb79c1RCWOkWPQRzbYVTX_e-E7CA xen/include/xeno/if_ether.h
 -3ddb79c2IYah7z7hkzPyOiG8szKkyw xen/include/xeno/if_packet.h
 -3e4540ccefnCkeqtD_dW_CBOjXUSYw xen/include/xeno/if_vlan.h
 -3df0af1c-QrOEqpPHq4uL3NZzCeJCg xen/include/xeno/in.h
 -3ddb79c0GurNF9tDWqQbAwJFH8ugfA xen/include/xeno/init.h
 -3ddb79c1Vi5VleJAOKHAlY0G2zAsgw xen/include/xeno/interrupt.h
 -3ddb79c2J6EnruiygRhBCgftzMzTeQ xen/include/xeno/ioctl.h
 -3ddb79c1nzaWu8NoF4xCCMSFJR4MlA xen/include/xeno/ioport.h
 -3ddb79c2qAxCOABlkKtD8Txohe-qEw xen/include/xeno/irq.h
 -3ddb79c2b3qe-6Ann09FqZBF4IrJaQ xen/include/xeno/irq_cpustat.h
 -3ddb79c11w_O7z7YZJnzuDSxaK5LlA xen/include/xeno/kdev_t.h
 -3e4540ccPHqIIv2pvnQ1gV8LUnoHIg xen/include/xeno/kernel.h
 -3e4cd9d8elj_7EgAs9Of56RQ2Yq_4g xen/include/xeno/keyhandler.h
 -3ddb79c1NfYlOrWNqgZkj9EwtFfJow xen/include/xeno/lib.h
 -3ddb79c18Ajy7micDGQQfJ0zWgEHtA xen/include/xeno/list.h
 -3ddb79c0_s2_wgV0cA6tztEaeyy1NA xen/include/xeno/major.h
 -3ddb79c1fsWuKI2sGlW5bqoG2lPVNA xen/include/xeno/mii.h
 -3ddb79c1gs2VbLbQlw0dcDUXYIepDA xen/include/xeno/mm.h
 -3ddb79c13p9iHn1XAp0IS1qvj4yDsg xen/include/xeno/module.h
 -3ddb79c1ieLZfGSFwfvvSQ2NK1BMSg xen/include/xeno/multiboot.h
 -3ec92e46saEJq7v1vgEJD3HZSufSBg xen/include/xeno/net_headers.h
 -3ddb79c0CLfAlJLg1ohdPD-Jjn-jxg xen/include/xeno/netdevice.h
 -3e4540ccaugeWGdOuphJKj6WFw1jkw xen/include/xeno/notifier.h
 -3ddb79c2Fg44_PBPVxHSC0gTOMq4Ow xen/include/xeno/pci.h
 -3ddb79c0MOVXq8qZDQRGb6z64_xAwg xen/include/xeno/pci_ids.h
 -3e54c38dlSCVdyVM4PKcrSfzLLxWUQ xen/include/xeno/perfc.h
 -3e54c38de9SUSYSAwxDf_DwkpAnQFA xen/include/xeno/perfc_defn.h
 -3ddb79c04nQVR3EYM5L4zxDV_MCo1g xen/include/xeno/prefetch.h
 -4006e65fWMwLqcocgik6wbF0Eeh0Og xen/include/xeno/rbtree.h
 -3e4540ccU1sgCx8seIMGlahmMfv7yQ xen/include/xeno/reboot.h
 -3ddb79c0LzqqS0LhAQ50ekgj4oGl7Q xen/include/xeno/sched.h
 -403a06a7H0hpHcKpAiDe5BPnaXWTlA xen/include/xeno/serial.h
 +3e397e66m2tO3s-J8Jnr7Ws_tGoPTg xen/include/xen/ac_timer.h
 +3ddb79c0nTsjSpVK4ZVTI9WwN24xtQ xen/include/xen/blk.h
 +3ddb79c0dVhTHLsv6CPTf4baKix4mA xen/include/xen/blkdev.h
 +3ddb79c18ePBgitnOs7GiOCFilODVw xen/include/xen/blkpg.h
 +3ddb79c1oOjpQbp68MW7yiUpoi-S-w xen/include/xen/brlock.h
 +3ddb79c1x7Ie3kifu7dQRx8y7HVyvA xen/include/xen/byteorder/big_endian.h
 +3ddb79c1qFXOEX1eD0yXJ_gsGkUt8w xen/include/xen/byteorder/generic.h
 +3ddb79c1VbwFALNpgx6uC_iZKFHD-A xen/include/xen/byteorder/little_endian.h
 +3ddb79c1VvNRMM35bpdZMekirCXP-A xen/include/xen/byteorder/pdp_endian.h
 +3ddb79c116WbJV8bwGZXFFJy_GNNvw xen/include/xen/byteorder/swab.h
 +3ddb79c1pwmlw8VXW8aaSKAVGVmjDA xen/include/xen/byteorder/swabb.h
 +3ddb79c0c0cX_DZE209-Bb-Rx1v-Aw xen/include/xen/cache.h
 +3e9c248aEG_nCngztiFmv5CfayNkcA xen/include/xen/cdrom.h
 +3f840f12CkbYSlwMrY2S11Mpyxg7Nw xen/include/xen/compiler.h
 +3ddb79c259jh8hE7vre_8NuE7nwNSA xen/include/xen/config.h
 +3eb165e0eawr3R-p2ZQtSdLWtLRN_A xen/include/xen/console.h
 +3f0c428eIwGr7n9fj4FkBdX2YvA_Rw xen/include/xen/crc32.h
 +3ddb79c1V44RD26YqCUm-kqIupM37A xen/include/xen/ctype.h
 +3ddb79c05DdHQ0UxX_jKsXdR4QlMCA xen/include/xen/delay.h
 +3ddb79c1uaWQZj551j1O0B5z8AnHOg xen/include/xen/elevator.h
 +3ddb79c0HIghfBF8zFUdmXhOU8i6hA xen/include/xen/errno.h
 +3ddb79c0rMjudDKkJku_mkm0J-BZgw xen/include/xen/etherdevice.h
 +3ddb79c0T3X07lFnM9OSE-W5bqIDSQ xen/include/xen/ethtool.h
 +3ddb79c1W0lQca8gRV7sN6j3iY4Luw xen/include/xen/event.h
 +3ddb79c1J4I_AjNflZL-1c1jOIlSyg xen/include/xen/genhd.h
 +3ddb79c1i-chIoeniqgYwMM3EgaR5w xen/include/xen/hdreg.h
 +3ddb79c12GuUuaxBKiMuwf-Qvuwpng xen/include/xen/hdsmart.h
 +3ddb79c0MM575N4YvMSiw9EqKH4JDA xen/include/xen/ide.h
 +3ddb79c1yHLp08JhgPxIMcZ8DwN9hg xen/include/xen/if.h
 +3ddb79c1RCWOkWPQRzbYVTX_e-E7CA xen/include/xen/if_ether.h
 +3ddb79c2IYah7z7hkzPyOiG8szKkyw xen/include/xen/if_packet.h
 +3e4540ccefnCkeqtD_dW_CBOjXUSYw xen/include/xen/if_vlan.h
 +3df0af1c-QrOEqpPHq4uL3NZzCeJCg xen/include/xen/in.h
 +3ddb79c0GurNF9tDWqQbAwJFH8ugfA xen/include/xen/init.h
 +3ddb79c1Vi5VleJAOKHAlY0G2zAsgw xen/include/xen/interrupt.h
 +3ddb79c2J6EnruiygRhBCgftzMzTeQ xen/include/xen/ioctl.h
 +3ddb79c1nzaWu8NoF4xCCMSFJR4MlA xen/include/xen/ioport.h
 +3ddb79c2qAxCOABlkKtD8Txohe-qEw xen/include/xen/irq.h
 +3ddb79c2b3qe-6Ann09FqZBF4IrJaQ xen/include/xen/irq_cpustat.h
 +3ddb79c11w_O7z7YZJnzuDSxaK5LlA xen/include/xen/kdev_t.h
 +3e4540ccPHqIIv2pvnQ1gV8LUnoHIg xen/include/xen/kernel.h
 +3e4cd9d8elj_7EgAs9Of56RQ2Yq_4g xen/include/xen/keyhandler.h
 +3ddb79c1NfYlOrWNqgZkj9EwtFfJow xen/include/xen/lib.h
 +3ddb79c18Ajy7micDGQQfJ0zWgEHtA xen/include/xen/list.h
 +3ddb79c0_s2_wgV0cA6tztEaeyy1NA xen/include/xen/major.h
 +3ddb79c1fsWuKI2sGlW5bqoG2lPVNA xen/include/xen/mii.h
 +3ddb79c1gs2VbLbQlw0dcDUXYIepDA xen/include/xen/mm.h
 +3ddb79c13p9iHn1XAp0IS1qvj4yDsg xen/include/xen/module.h
 +3ddb79c1ieLZfGSFwfvvSQ2NK1BMSg xen/include/xen/multiboot.h
 +3ec92e46saEJq7v1vgEJD3HZSufSBg xen/include/xen/net_headers.h
 +3ddb79c0CLfAlJLg1ohdPD-Jjn-jxg xen/include/xen/netdevice.h
 +3e4540ccaugeWGdOuphJKj6WFw1jkw xen/include/xen/notifier.h
 +3ddb79c2Fg44_PBPVxHSC0gTOMq4Ow xen/include/xen/pci.h
 +3ddb79c0MOVXq8qZDQRGb6z64_xAwg xen/include/xen/pci_ids.h
 +3e54c38dlSCVdyVM4PKcrSfzLLxWUQ xen/include/xen/perfc.h
 +3e54c38de9SUSYSAwxDf_DwkpAnQFA xen/include/xen/perfc_defn.h
 +3ddb79c04nQVR3EYM5L4zxDV_MCo1g xen/include/xen/prefetch.h
 +4006e65fWMwLqcocgik6wbF0Eeh0Og xen/include/xen/rbtree.h
 +3e4540ccU1sgCx8seIMGlahmMfv7yQ xen/include/xen/reboot.h
 +40589969nPq3DMzv24RDb5LXE9brHw xen/include/xen/sched-if.h
 +3ddb79c0LzqqS0LhAQ50ekgj4oGl7Q xen/include/xen/sched.h
 +403a06a7H0hpHcKpAiDe5BPnaXWTlA xen/include/xen/serial.h
 +3ddb79c0VDeD-Oft5eNfMneTU3D1dQ xen/include/xen/skbuff.h
 +3ddb79c14dXIhP7C2ahnoD08K90G_w xen/include/xen/slab.h
 +3ddb79c09xbS-xxfKxuV3JETIhBzmg xen/include/xen/smp.h
 +3ddb79c1-yIt89RT02wIPp2xDR8YjQ xen/include/xen/socket.h
 +3ddb79c2V2P9F2xMCzDJ9vbUofSg_Q xen/include/xen/sockios.h
 +3ddb79c2iIcESrDAB8samy_yAh6olQ xen/include/xen/spinlock.h
 +3e7f358aMtFMUVvN_Zjg5qvEJIqEBA xen/include/xen/string.h
 +3ddb79c0BnA20PbgmuMPSGIBljNRQw xen/include/xen/time.h
 +3ddb79c2HFkXuRxi1CriJtSFmY6Ybw xen/include/xen/timer.h
 +3ddb79c2_m8lT9jDKse_tePj7zcnNQ xen/include/xen/timex.h
 +3ddb79c2e2C14HkndNEJlYwXaPrF5A xen/include/xen/tqueue.h
 +403a3edbG9K5uZjuY19_LORbQGmFbA xen/include/xen/trace.h
 +3ddb79c1-kVvF8cVa0k3ZHDdBMj01Q xen/include/xen/types.h
 +3f055a3dwldYR102YcSuBaxIf9t3Jw xen/include/xen/vbd.h
 +3e8827bdaqPeZAWGVOwswgY9bWSx4g xen/include/xen/version.h
 +3ddb79c2Ae5KpzhC9LCYG7mP_Vi4Aw xen/include/xen/vif.h
+ 405b8599BsDsDwKEJLS0XipaiQW3TA xen/include/xeno/shadow.h
 -3ddb79c0VDeD-Oft5eNfMneTU3D1dQ xen/include/xeno/skbuff.h
 -3ddb79c14dXIhP7C2ahnoD08K90G_w xen/include/xeno/slab.h
 -3ddb79c09xbS-xxfKxuV3JETIhBzmg xen/include/xeno/smp.h
 -3ddb79c1-yIt89RT02wIPp2xDR8YjQ xen/include/xeno/socket.h
 -3ddb79c2V2P9F2xMCzDJ9vbUofSg_Q xen/include/xeno/sockios.h
 -3ddb79c2iIcESrDAB8samy_yAh6olQ xen/include/xeno/spinlock.h
 -3e7f358aMtFMUVvN_Zjg5qvEJIqEBA xen/include/xeno/string.h
 -3ddb79c0BnA20PbgmuMPSGIBljNRQw xen/include/xeno/time.h
 -3ddb79c2HFkXuRxi1CriJtSFmY6Ybw xen/include/xeno/timer.h
 -3ddb79c2_m8lT9jDKse_tePj7zcnNQ xen/include/xeno/timex.h
 -3ddb79c2e2C14HkndNEJlYwXaPrF5A xen/include/xeno/tqueue.h
 -403a3edbG9K5uZjuY19_LORbQGmFbA xen/include/xeno/trace.h
 -3ddb79c1-kVvF8cVa0k3ZHDdBMj01Q xen/include/xeno/types.h
 -3f055a3dwldYR102YcSuBaxIf9t3Jw xen/include/xeno/vbd.h
 -3e8827bdaqPeZAWGVOwswgY9bWSx4g xen/include/xeno/version.h
 -3ddb79c2Ae5KpzhC9LCYG7mP_Vi4Aw xen/include/xeno/vif.h
  3ddb79c4YQCQ6r0xNLLu0jfbM7pVmA xen/net/Makefile
  3ddb79c4AkfDkTCw0comx4L8wsUOMg xen/net/dev.c
  3ddb79c4x1L_soh8b-r_1jQW_37Icw xen/net/dev_mcast.c
index 65b199bec34e53a151054bde001f8096fb37cd94,7a0065247bd3043abcc18956502b4ce8c9787b05..33f30c8f3e9a9f70696fe9eeebe8a365af074536
- BitKeeper/*/*
- PENDING/*
++*.a
 +*.o
++*.pyc
 +*.so
 +*.so.*
- *.a
- *.pyc
+ BitKeeper/*/*
+ PENDING/*
++TAGS
+ URK
 +extras/mini-os/h/hypervisor-ifs
 +tools/*/build/lib*/*.py
  tools/balloon/balloon
- tools/misc/xen_read_console
+ tools/control/.checkstyle
+ tools/control/.classpath
+ tools/control/.project
+ tools/control/build-cmdline/**
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/Command.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/CommandDestroy.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/CommandHelp.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/CommandList.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/CommandNew.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/CommandStart.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/CommandStop.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/Defaults$Handler.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/Defaults.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/Domain.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/Main.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/Settings.class
+ tools/control/build-dom/uk/ac/cam/cl/xeno/domctl/StringPattern.class
+ tools/control/build-web/**
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/Command.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/CommandDestroy.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/CommandHelp.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/CommandList.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/CommandNew.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/CommandStart.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/CommandStop.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/Defaults$Handler.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/Defaults.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/Domain.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/Main.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/Settings.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/domctl/StringPattern.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/Extent.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/Library.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/Main.java.orig
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/Mode.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/Parser.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/Partition.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/PartitionManager.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/RootBean.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/SystemConfigurationBean.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/VirtualBlockDevice.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/VirtualDisk.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/VirtualDiskManager.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/XML.class
+ tools/control/build-xen/WEB-INF/classes/uk/ac/cam/cl/xeno/xenctl/XMLHelper.class
+ tools/control/build-xen/WEB-INF/web.xml
+ tools/control/build-xen/about.jsp
+ tools/control/build-xen/dom-del.jsp
+ tools/control/build-xen/dom-delr.jsp
+ tools/control/build-xen/dom-lis.jsp
+ tools/control/build-xen/dom-new.jsp
+ tools/control/build-xen/dom-newr.jsp
+ tools/control/build-xen/dom-sta.jsp
+ tools/control/build-xen/dom-star.jsp
+ tools/control/build-xen/dom-stp.jsp
+ tools/control/build-xen/dom-stpr.jsp
+ tools/control/build-xen/dom.jsp
+ tools/control/build-xen/help.jsp
+ tools/control/build-xen/img/cambridge.gif
+ tools/control/build-xen/img/help.gif
+ tools/control/build-xen/img/home.gif
+ tools/control/build-xen/img/pixel.gif
+ tools/control/build-xen/img/search.gif
+ tools/control/build-xen/img/xeno.gif
+ tools/control/build-xen/index.jsp
+ tools/control/build-xen/newdom.jsp
+ tools/control/build-xen/tmpl/about.tmpl
+ tools/control/build-xen/tmpl/dom-del.tmpl
+ tools/control/build-xen/tmpl/dom-delr.tmpl
+ tools/control/build-xen/tmpl/dom-lis.tmpl
+ tools/control/build-xen/tmpl/dom-new.tmpl
+ tools/control/build-xen/tmpl/dom-newr.tmpl
+ tools/control/build-xen/tmpl/dom-sta.tmpl
+ tools/control/build-xen/tmpl/dom-star.tmpl
+ tools/control/build-xen/tmpl/dom-stp.tmpl
+ tools/control/build-xen/tmpl/dom-stpr.tmpl
+ tools/control/build-xen/tmpl/dom.tmpl
+ tools/control/build-xen/tmpl/dommenu.tmpl
+ tools/control/build-xen/tmpl/help.tmpl
+ tools/control/build-xen/tmpl/index.tmpl
+ tools/control/build-xen/tmpl/install.pl
+ tools/control/build-xen/tmpl/makefile
+ tools/control/build-xen/tmpl/newdom.tmpl
+ tools/control/build-xen/tmpl/vd-fv.tmpl
+ tools/control/build-xen/tmpl/vd-pa.tmpl
+ tools/control/build-xen/tmpl/vd-par.tmpl
+ tools/control/build-xen/tmpl/vd-pv.tmpl
+ tools/control/build-xen/tmpl/vd-vbdc.tmpl
+ tools/control/build-xen/tmpl/vd-vbdcr.tmpl
+ tools/control/build-xen/tmpl/vd-vbdd.tmpl
+ tools/control/build-xen/tmpl/vd-vbdf.tmpl
+ tools/control/build-xen/tmpl/vd-vbdfr.tmpl
+ tools/control/build-xen/tmpl/vd-vbdv.tmpl
+ tools/control/build-xen/tmpl/vd-vdc.tmpl
+ tools/control/build-xen/tmpl/vd-vdcr.tmpl
+ tools/control/build-xen/tmpl/vd-vdd.tmpl
+ tools/control/build-xen/tmpl/vd-vddr.tmpl
+ tools/control/build-xen/tmpl/vd-vdr.tmpl
+ tools/control/build-xen/tmpl/vd-vdrr.tmpl
+ tools/control/build-xen/tmpl/vd-vdv.tmpl
+ tools/control/build-xen/tmpl/vd.tmpl
+ tools/control/build-xen/tmpl/vdmenu.tmpl
+ tools/control/build-xen/tmpl/xenofoot.def
+ tools/control/build-xen/tmpl/xenohead.def
+ tools/control/build-xen/tmpl/xenostyle.css
+ tools/control/build-xen/vd-fv.jsp
+ tools/control/build-xen/vd-pa.jsp
+ tools/control/build-xen/vd-par.jsp
+ tools/control/build-xen/vd-pv.jsp
+ tools/control/build-xen/vd-vbdc.jsp
+ tools/control/build-xen/vd-vbdcr.jsp
+ tools/control/build-xen/vd-vbdd.jsp
+ tools/control/build-xen/vd-vbdf.jsp
+ tools/control/build-xen/vd-vbdfr.jsp
+ tools/control/build-xen/vd-vbdv.jsp
+ tools/control/build-xen/vd-vdc.jsp
+ tools/control/build-xen/vd-vdcr.jsp
+ tools/control/build-xen/vd-vdd.jsp
+ tools/control/build-xen/vd-vddr.jsp
+ tools/control/build-xen/vd-vdr.jsp
+ tools/control/build-xen/vd-vdrr.jsp
+ tools/control/build-xen/vd-vdv.jsp
+ tools/control/build-xen/vd.jsp
+ tools/control/build-xen/xenostyle.css
+ tools/control/dist-web/**
+ tools/control/dist/docs/api/allclasses-frame.html
+ tools/control/dist/docs/api/allclasses-noframe.html
+ tools/control/dist/docs/api/constant-values.html
+ tools/control/dist/docs/api/deprecated-list.html
+ tools/control/dist/docs/api/help-doc.html
+ tools/control/dist/docs/api/index-all.html
+ tools/control/dist/docs/api/index.html
+ tools/control/dist/docs/api/overview-frame.html
+ tools/control/dist/docs/api/overview-summary.html
+ tools/control/dist/docs/api/overview-tree.html
+ tools/control/dist/docs/api/package-list
+ tools/control/dist/docs/api/packages.html
+ tools/control/dist/docs/api/stylesheet.css
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/Command.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/CommandDestroy.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/CommandHelp.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/CommandList.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/CommandNew.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/CommandStart.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/CommandStop.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/Defaults.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/Domain.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/Main.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/Settings.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/StringPattern.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/package-frame.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/package-summary.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/domctl/package-tree.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/Extent.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/Library.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/Mode.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/Parser.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/Partition.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/PartitionManager.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/RootBean.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/SystemConfigurationBean.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/VirtualBlockDevice.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/VirtualDisk.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/VirtualDiskManager.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/XML.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/XMLHelper.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/package-frame.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/package-summary.html
+ tools/control/dist/docs/api/uk/ac/cam/cl/xeno/xenctl/package-tree.html
+ tools/control/dist/docs/empty_dir
+ tools/control/dist/xenctl-0.1-dev.war
+ tools/control/domctl.jar
+ tools/control/eclipsebin/**
+ tools/control/web/about.jsp
+ tools/control/web/dom-del.jsp
+ tools/control/web/dom-delr.jsp
+ tools/control/web/dom-lis.jsp
+ tools/control/web/dom-new.jsp
+ tools/control/web/dom-newr.jsp
+ tools/control/web/dom-sta.jsp
+ tools/control/web/dom-star.jsp
+ tools/control/web/dom-stp.jsp
+ tools/control/web/dom-stpr.jsp
+ tools/control/web/dom.jsp
+ tools/control/web/help.jsp
+ tools/control/web/index.jsp
+ tools/control/web/newdom.jsp
++tools/control/web/pd-g.jsp
++tools/control/web/pd-gr.jsp
++tools/control/web/pd-l.jsp
++tools/control/web/pd-r.jsp
++tools/control/web/pd-rr.jsp
++tools/control/web/pd.jsp
+ tools/control/web/vd-fv.jsp
+ tools/control/web/vd-pa.jsp
+ tools/control/web/vd-par.jsp
+ tools/control/web/vd-pv.jsp
+ tools/control/web/vd-vbdc.jsp
+ tools/control/web/vd-vbdcr.jsp
+ tools/control/web/vd-vbdd.jsp
+ tools/control/web/vd-vbdf.jsp
+ tools/control/web/vd-vbdfr.jsp
+ tools/control/web/vd-vbdv.jsp
+ tools/control/web/vd-vdc.jsp
+ tools/control/web/vd-vdcr.jsp
+ tools/control/web/vd-vdd.jsp
+ tools/control/web/vd-vddr.jsp
+ tools/control/web/vd-vdr.jsp
+ tools/control/web/vd-vdrr.jsp
+ tools/control/web/vd-vdv.jsp
+ tools/control/web/vd.jsp
+ tools/control/web/xenostyle.css
+ tools/control/xenctl-cmdline.jar
+ tools/domain_builder/dom_builder.o
+ tools/domain_builder/dom_kill.o
+ tools/domain_builder/domain_builder
+ tools/domain_builder/kill_domain
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/Command.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/CommandDestroy.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/CommandHelp.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/CommandNew.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/CommandStart.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/CommandStop.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/Defaults$Handler.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/Defaults.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/Main.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/Settings.class
+ tools/domctl/build/uk/ac/cam/cl/xeno/domctl/StringPattern.class
+ tools/domctl/domctl.jar
+ tools/internal/xi_build
+ tools/internal/xi_build.o
+ tools/internal/xi_create
+ tools/internal/xi_create.o
+ tools/internal/xi_destroy
+ tools/internal/xi_destroy.o
++tools/internal/xi_list
+ tools/internal/xi_phys_grant
+ tools/internal/xi_phys_grant.c~
+ tools/internal/xi_phys_grant.o
+ tools/internal/xi_phys_probe
+ tools/internal/xi_phys_probe.c~
+ tools/internal/xi_phys_probe.o
+ tools/internal/xi_phys_revoke
+ tools/internal/xi_phys_revoke.c~
+ tools/internal/xi_phys_revoke.o
++tools/internal/xi_restore_linux
++tools/internal/xi_save_linux
++tools/internal/xi_sched_domain
++tools/internal/xi_sched_global
+ tools/internal/xi_start
+ tools/internal/xi_start.o
+ tools/internal/xi_stop
+ tools/internal/xi_stop.o
++tools/internal/xi_usage
++tools/internal/xi_vbd_add
++tools/internal/xi_vbd_create
++tools/internal/xi_vbd_info
++tools/internal/xi_vbd_list
++tools/internal/xi_vif_params
 +tools/misc/miniterm/miniterm
- xen/xen
- xen/xen.gz
- xen/xen.s
 +tools/misc/xen_cpuperf
 +tools/misc/xen_log
++tools/misc/xen_netwatch
++tools/misc/xen_read_console
++tools/misc/xen_refresh_dev
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/Extent.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/Library.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/Main.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/Mode.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/Parser.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/Partition.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/PartitionManager.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/VirtualBlockDevice.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/VirtualDisk.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/VirtualDiskManager.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/XML.class
+ tools/vdmanager/build/uk/ac/cam/cl/xeno/vdmanager/XMLHelper.class
+ tools/vdmanager/vdmanager.jar
++tools/xc/lib/libxc.a
++tools/xc/lib/libxc.so
++tools/xc/lib/libxc.so.1.3
++tools/xc/lib/libxc.so.1.3.0
++tools/xc/lib/libxc_bvtsched.o
++tools/xc/lib/libxc_domain.o
++tools/xc/lib/libxc_linux_build.o
++tools/xc/lib/libxc_linux_restore.o
++tools/xc/lib/libxc_linux_save.o
++tools/xc/lib/libxc_misc.o
++tools/xc/lib/libxc_private.o
++tools/xc/lib/libxc_vbd.o
++tools/xc/lib/libxc_vif.o
++tools/xc/lib/xc_bvtsched.o
++tools/xc/lib/xc_domain.o
++tools/xc/lib/xc_evtchn.o
++tools/xc/lib/xc_linux_build.o
++tools/xc/lib/xc_linux_restore.o
++tools/xc/lib/xc_linux_save.o
++tools/xc/lib/xc_misc.o
++tools/xc/lib/xc_netbsd_build.o
++tools/xc/lib/xc_physdev.o
++tools/xc/lib/xc_private.o
++tools/xc/lib/xc_vbd.o
++tools/xc/lib/xc_vif.o
++tools/xc/py/XenoUtil.pyc
++tools/xc/py/build/lib.linux-i686-2.2/Xc.so
++tools/xc/py/build/lib/XenoUtil.py
++tools/xc/py/build/temp.linux-i686-2.2/Xc.o
++tools/xend/xend
++tools/xend/xend.o
++tools/xend/xend_utils.o
 +tools/xentrace/xentrace
+ xen-2.4.16/common/domain.c.smh
+ xen-2.4.16/common/kernel.c.ok-ish
+ xen-2.4.16/common/kernel.c.old
+ xen-2.4.16/drivers/block/ll_rw_blk.c.orig
+ xen-2.4.16/drivers/ide/ide-disk.c.orig
+ xen-2.4.16/drivers/ide/ide-probe.c.orig
+ xen-2.4.16/drivers/ide/ide-taskfile.c.orig
+ xen-2.4.16/drivers/ide/ide.c.orig
+ xen-2.4.16/drivers/net/e1000/e1000.o
+ xen-2.4.16/drivers/net/e1000/e1000_ethtool.o
+ xen-2.4.16/drivers/net/e1000/e1000_hw.o
+ xen-2.4.16/drivers/net/e1000/e1000_main.o
+ xen-2.4.16/drivers/net/e1000/e1000_param.o
+ xen-2.4.16/foo
+ xen-2.4.16/include/hypervisor-ifs/block.h.orig
+ xen-2.4.16/include/xeno/blkdev.h.orig
+ xen-2.4.16/include/xeno/sched.h.orig
+ xen-2.4.16/size.image
++xen/BLOG
+ xen/arch/i386/acpitable.o
+ xen/arch/i386/apic.o
+ xen/arch/i386/arch.o
+ xen/arch/i386/boot/boot.o
+ xen/arch/i386/delay.o
+ xen/arch/i386/entry.o
+ xen/arch/i386/extable.o
++xen/arch/i386/flushtlb.o
+ xen/arch/i386/i387.o
+ xen/arch/i386/i8259.o
+ xen/arch/i386/idle0_task.o
+ xen/arch/i386/io_apic.o
+ xen/arch/i386/ioremap.o
+ xen/arch/i386/irq.o
+ xen/arch/i386/mm.o
+ xen/arch/i386/mpparse.o
++xen/arch/i386/nmi.o
+ xen/arch/i386/pci-dma.o
+ xen/arch/i386/pci-i386.o
+ xen/arch/i386/pci-irq.o
+ xen/arch/i386/pci-pc.o
++xen/arch/i386/pdb-stub.o
+ xen/arch/i386/process.o
+ xen/arch/i386/rwlock.o
+ xen/arch/i386/setup.o
+ xen/arch/i386/smp.o
+ xen/arch/i386/smpboot.o
+ xen/arch/i386/time.o
+ xen/arch/i386/trampoline.o
+ xen/arch/i386/traps.o
+ xen/arch/i386/usercopy.o
+ xen/common/ac_timer.o
+ xen/common/block.o
+ xen/common/brlock.o
+ xen/common/common.o
++xen/common/console.o
++xen/common/debug-linux.o
++xen/common/debug.c~
++xen/common/debug.o
+ xen/common/dom0_ops.o
+ xen/common/dom_mem_ops.o
+ xen/common/domain.o
+ xen/common/domain_page.o
+ xen/common/event.o
++xen/common/event_channel.o
+ xen/common/kernel.o
+ xen/common/keyhandler.o
+ xen/common/lib.o
+ xen/common/memory.o
+ xen/common/network.o
+ xen/common/page_alloc.o
+ xen/common/perfc.o
++xen/common/physdev.o
++xen/common/rbtree.o
+ xen/common/resource.o
+ xen/common/schedule.o
++xen/common/shadow.o
+ xen/common/slab.o
+ xen/common/softirq.o
+ xen/common/string.o
+ xen/common/timer.o
++xen/common/trace.o
+ xen/common/vsprintf.o
+ xen/drivers/block/blkpg.o
++xen/drivers/block/cciss.o
++xen/drivers/block/cciss_scsi.o
+ xen/drivers/block/driver.o
+ xen/drivers/block/elevator.o
+ xen/drivers/block/genhd.o
+ xen/drivers/block/ll_rw_blk.o
+ xen/drivers/block/xen_block.c~
+ xen/drivers/block/xen_block.o
+ xen/drivers/block/xen_physdisk.c~
+ xen/drivers/block/xen_physdisk.o
+ xen/drivers/block/xen_segment.o
++xen/drivers/block/xen_vbd.o
+ xen/drivers/cdrom/cdrom.o
+ xen/drivers/cdrom/driver.o
++xen/drivers/char/console.o
+ xen/drivers/char/driver.o
++xen/drivers/char/keyboard.o
++xen/drivers/char/serial.o
+ xen/drivers/char/xen_kbd.o
+ xen/drivers/char/xen_serial.o
+ xen/drivers/ide/driver.o
+ xen/drivers/ide/ide-cd.o
+ xen/drivers/ide/ide-disk.o
+ xen/drivers/ide/ide-dma.o
+ xen/drivers/ide/ide-features.o
+ xen/drivers/ide/ide-geometry.o
+ xen/drivers/ide/ide-pci.o
+ xen/drivers/ide/ide-probe.o
+ xen/drivers/ide/ide-taskfile.o
+ xen/drivers/ide/ide-xeno.o
+ xen/drivers/ide/ide.o
+ xen/drivers/ide/piix.o
++xen/drivers/message/fusion/driver.o
++xen/drivers/message/fusion/mptbase.o
++xen/drivers/message/fusion/mptscsih.o
+ xen/drivers/net/3c59x.o
+ xen/drivers/net/8139too.o
+ xen/drivers/net/Space.o
+ xen/drivers/net/driver.o
++xen/drivers/net/dummy.o
+ xen/drivers/net/e100/e100.o
+ xen/drivers/net/e100/e100_config.o
+ xen/drivers/net/e100/e100_eeprom.o
+ xen/drivers/net/e100/e100_main.o
+ xen/drivers/net/e100/e100_phy.o
+ xen/drivers/net/e100/e100_test.o
+ xen/drivers/net/e1000/e1000.o
+ xen/drivers/net/e1000/e1000_ethtool.o
+ xen/drivers/net/e1000/e1000_hw.o
+ xen/drivers/net/e1000/e1000_main.o
+ xen/drivers/net/e1000/e1000_param.o
++xen/drivers/net/e1000/kcompat.o
+ xen/drivers/net/ne/8390.o
+ xen/drivers/net/ne/ne.o
+ xen/drivers/net/ne/ne_drv.o
+ xen/drivers/net/net_init.o
+ xen/drivers/net/pcnet32.o
+ xen/drivers/net/setup.o
+ xen/drivers/net/tg3.o
+ xen/drivers/net/tulip/21142.o
+ xen/drivers/net/tulip/eeprom.o
+ xen/drivers/net/tulip/interrupt.o
+ xen/drivers/net/tulip/media.o
+ xen/drivers/net/tulip/pnic.o
+ xen/drivers/net/tulip/pnic2.o
+ xen/drivers/net/tulip/timer.o
+ xen/drivers/net/tulip/tulip.o
+ xen/drivers/net/tulip/tulip_core.o
+ xen/drivers/net/via-rhine.o
  xen/drivers/pci/classlist.h
+ xen/drivers/pci/compat.o
  xen/drivers/pci/devlist.h
+ xen/drivers/pci/driver.o
  xen/drivers/pci/gen-devlist
+ xen/drivers/pci/names.o
+ xen/drivers/pci/pci.o
+ xen/drivers/pci/quirks.o
+ xen/drivers/pci/setup-res.o
++xen/drivers/scsi/BusLogic.o
+ xen/drivers/scsi/aacraid/aachba.o
+ xen/drivers/scsi/aacraid/aacraid.o
+ xen/drivers/scsi/aacraid/commctrl.o
+ xen/drivers/scsi/aacraid/comminit.o
+ xen/drivers/scsi/aacraid/commsup.o
+ xen/drivers/scsi/aacraid/dpcsup.o
+ xen/drivers/scsi/aacraid/linit.o
+ xen/drivers/scsi/aacraid/rx.o
+ xen/drivers/scsi/aacraid/sa.o
+ xen/drivers/scsi/aic7xxx/aic7770.o
+ xen/drivers/scsi/aic7xxx/aic7770_osm.o
++xen/drivers/scsi/aic7xxx/aic79xx_core.o
++xen/drivers/scsi/aic7xxx/aic79xx_osm.o
++xen/drivers/scsi/aic7xxx/aic79xx_osm_pci.o
++xen/drivers/scsi/aic7xxx/aic79xx_pci.o
++xen/drivers/scsi/aic7xxx/aic79xx_proc.o
+ xen/drivers/scsi/aic7xxx/aic7xxx.o
+ xen/drivers/scsi/aic7xxx/aic7xxx_93cx6.o
+ xen/drivers/scsi/aic7xxx/aic7xxx_core.o
+ xen/drivers/scsi/aic7xxx/aic7xxx_osm.o
+ xen/drivers/scsi/aic7xxx/aic7xxx_osm_pci.o
+ xen/drivers/scsi/aic7xxx/aic7xxx_pci.o
+ xen/drivers/scsi/aic7xxx/aic7xxx_proc.o
+ xen/drivers/scsi/constants.o
+ xen/drivers/scsi/driver.o
+ xen/drivers/scsi/hosts.o
+ xen/drivers/scsi/megaraid.o
+ xen/drivers/scsi/scsi.o
+ xen/drivers/scsi/scsi_dma.o
+ xen/drivers/scsi/scsi_error.o
+ xen/drivers/scsi/scsi_ioctl.o
+ xen/drivers/scsi/scsi_lib.o
+ xen/drivers/scsi/scsi_merge.o
++xen/drivers/scsi/scsi_obsolete.o
+ xen/drivers/scsi/scsi_proc.o
+ xen/drivers/scsi/scsi_queue.o
+ xen/drivers/scsi/scsi_scan.o
+ xen/drivers/scsi/scsi_syms.o
+ xen/drivers/scsi/scsicam.o
+ xen/drivers/scsi/sd.o
++xen/drivers/scsi/sym53c8xx_2/sym53c8xx.o
++xen/drivers/scsi/sym53c8xx_2/sym_fw.o
++xen/drivers/scsi/sym53c8xx_2/sym_glue.o
++xen/drivers/scsi/sym53c8xx_2/sym_hipd.o
++xen/drivers/scsi/sym53c8xx_2/sym_malloc.o
++xen/drivers/scsi/sym53c8xx_2/sym_misc.o
++xen/drivers/scsi/sym53c8xx_2/sym_nvram.o
+ xen/image
+ xen/image.dis
+ xen/image.gz
+ xen/image.s
  xen/include/asm
 +xen/include/hypervisor-ifs/arch
+ xen/include/hypervisor-ifs/hypervisor-ifs
+ xen/include/hypervisor-ifs/segment.h~
+ xen/include/linux
 +xen/include/xen/compile.h
+ xen/include/xeno/compile.h
+ xen/include/xeno/physdisk.h~
+ xen/net/dev.o
+ xen/net/dev_mcast.o
+ xen/net/devinit.o
+ xen/net/eth.o
+ xen/net/network.o
+ xen/net/skbuff.o
  xen/tools/elf-reloc
  xen/tools/figlet/figlet
- TAGS
++xen/xen
++xen/xen.gz
++xen/xen.s
+ xenolinux-2.4.16-sparse/arch/xeno/drivers/block/Makefile.orig
+ xenolinux-2.4.16-sparse/arch/xeno/drivers/block/block.c.orig
+ xenolinux-2.4.16-sparse/scripts/kconfig.tk
+ xenolinux-2.4.21-sparse/arch/xeno/drivers/block/xl_block.c~
+ xenolinux-2.4.21-sparse/arch/xeno/drivers/block/xl_physdisk_proc.c.bak
+ xenolinux-2.4.21-sparse/arch/xeno/drivers/block/xl_physdisk_proc.c~
+ xenolinux-2.4.21-sparse/include/linux/blk.h~
 -tools/control/web/pd-g.jsp
 -tools/control/web/pd-gr.jsp
 -tools/control/web/pd-l.jsp
 -tools/control/web/pd-r.jsp
 -tools/control/web/pd-rr.jsp
 -tools/control/web/pd.jsp
 -tools/internal/xi_list
 -tools/internal/xi_usage
 -tools/internal/xi_sched_domain
 -tools/internal/xi_sched_global
 -xen/arch/i386/nmi.o
 -xen/drivers/net/dummy.o
 -tools/misc/miniterm/miniterm
 -tools/misc/xen_read_console
 -extras/mini-os/h/hypervisor-ifs
 -xen/BLOG
 -xen/drivers/block/xen_vbd.o
 -tools/internal/xi_vif_params
 -tools/misc/xen_cpuperf
 -tools/misc/xen_log
 -tools/misc/xen_refresh_dev
+ xenolinux-2.4.22-sparse/arch/xeno/drivers/block/device
 -xen/common/debug.c~
 -xen/common/debug.o
 -tools/internal/xi_restore_linux
 -tools/internal/xi_save_linux
 -tools/internal/xi_vbd_add
 -tools/internal/xi_vbd_create
 -tools/internal/xi_vbd_info
 -tools/internal/xi_vbd_list
 -xen/drivers/scsi/BusLogic.o
 -tools/misc/xen_netwatch
 -xen/drivers/scsi/scsi_obsolete.o
 -xen/xen
 -xen/xen.gz
 -tools/xc/lib/libxc.a
 -tools/xc/lib/libxc.so
 -tools/xc/lib/libxc_bvtsched.o
 -tools/xc/lib/libxc_domain.o
 -tools/xc/lib/libxc_linux_build.o
 -tools/xc/lib/libxc_linux_restore.o
 -tools/xc/lib/libxc_linux_save.o
 -tools/xc/lib/libxc_misc.o
 -tools/xc/lib/libxc_private.o
 -tools/xc/lib/libxc_vbd.o
 -tools/xc/lib/libxc_vif.o
 -tools/xc/py/build/lib.linux-i686-2.2/Xc.so
 -tools/xc/py/build/lib/XenoUtil.py
 -tools/xc/py/build/temp.linux-i686-2.2/Xc.o
 -xen/common/console.o
 -xen/common/event_channel.o
 -xen/drivers/scsi/aic7xxx/aic79xx_core.o
 -xen/drivers/scsi/aic7xxx/aic79xx_osm.o
 -xen/drivers/scsi/aic7xxx/aic79xx_osm_pci.o
 -xen/drivers/scsi/aic7xxx/aic79xx_pci.o
 -xen/drivers/scsi/aic7xxx/aic79xx_proc.o
 -tools/xc/lib/xc_bvtsched.o
 -tools/xc/lib/xc_domain.o
 -tools/xc/lib/xc_linux_build.o
 -tools/xc/lib/xc_linux_restore.o
 -tools/xc/lib/xc_linux_save.o
 -tools/xc/lib/xc_misc.o
 -tools/xc/lib/xc_private.o
 -tools/xc/lib/xc_vbd.o
 -tools/xc/lib/xc_vif.o
 -xen/xen.s
 -xen/drivers/message/fusion/driver.o
 -xen/drivers/message/fusion/mptbase.o
 -xen/drivers/message/fusion/mptscsih.o
 -xen/drivers/net/e1000/kcompat.o
 -xen/drivers/scsi/sym53c8xx_2/sym53c8xx.o
 -xen/drivers/scsi/sym53c8xx_2/sym_fw.o
 -xen/drivers/scsi/sym53c8xx_2/sym_glue.o
 -xen/drivers/scsi/sym53c8xx_2/sym_hipd.o
 -xen/drivers/scsi/sym53c8xx_2/sym_malloc.o
 -xen/drivers/scsi/sym53c8xx_2/sym_misc.o
 -xen/drivers/scsi/sym53c8xx_2/sym_nvram.o
 -xen/arch/i386/flushtlb.o
 -xen/common/rbtree.o
 -xen/drivers/block/cciss.o
 -xen/drivers/block/cciss_scsi.o
 -TAGS
 -tools/xc/lib/xc_netbsd_build.o
 -xen/arch/i386/pdb-stub.o
 -xen/common/debug-linux.o
 -xen/drivers/char/serial.o
 -tools/xend/xend.o
 -tools/xentrace/xentrace
 -tools/xc/lib/xc_evtchn.o
 -tools/xc/py/XenoUtil.pyc
 -tools/xend/xend
 -tools/xc/lib/libxc.so.1.3
 -tools/xc/lib/libxc.so.1.3.0
 -tools/xc/lib/xc_physdev.o
 -tools/xend/xend_utils.o
 -xen/common/physdev.o
 -xen/common/shadow.o
 -xen/common/trace.o
 -xen/drivers/char/console.o
 -xen/drivers/char/keyboard.o
 -xen/include/hypervisor-ifs/arch
index 69c61661117482ae1437585d25102ec39bd3e4ed,0000000000000000000000000000000000000000..d276979a71b3408e3767d9da3633eceb5b855386
mode 100644,000000..100644
--- /dev/null
@@@ -1,79 -1,0 +1,81 @@@
 +/******************************************************************************
 + * domain_page.h
 + * 
 + * Allow temporary mapping of domain pages. Based on ideas from the
 + * Linux PKMAP code -- the copyrights and credits are retained below.
 + */
 +
 +/*
 + * (C) 1999 Andrea Arcangeli, SuSE GmbH, andrea@suse.de
 + *          Gerhard Wichert, Siemens AG, Gerhard.Wichert@pdb.siemens.de *
 + * Copyright (C) 1999 Ingo Molnar <mingo@redhat.com>
 + */
 +
 +#include <xen/config.h>
 +#include <xen/sched.h>
 +#include <xen/mm.h>
 +#include <xen/perfc.h>
 +#include <asm/domain_page.h>
 +#include <asm/pgalloc.h>
 +
 +unsigned long *mapcache;
 +static unsigned int map_idx, shadow_map_idx[NR_CPUS];
 +static spinlock_t map_lock = SPIN_LOCK_UNLOCKED;
 +
 +/* Use a spare PTE bit to mark entries ready for recycling. */
 +#define READY_FOR_TLB_FLUSH (1<<10)
 +
 +static void flush_all_ready_maps(void)
 +{
 +    unsigned long *cache = mapcache;
 +
 +    /* A bit skanky -- depends on having an aligned PAGE_SIZE set of PTEs. */
 +    do { if ( (*cache & READY_FOR_TLB_FLUSH) ) *cache = 0; }
 +    while ( ((unsigned long)(++cache) & ~PAGE_MASK) != 0 );
 +
 +    perfc_incrc(domain_page_tlb_flush);
 +    local_flush_tlb();
 +}
 +
 +
 +void *map_domain_mem(unsigned long pa)
 +{
 +    unsigned long va;
 +    unsigned int idx, cpu = smp_processor_id();
 +    unsigned long *cache = mapcache;
 +    unsigned long flags;
 +
++    perfc_incrc(map_domain_mem_count);
++
 +    spin_lock_irqsave(&map_lock, flags);
 +
 +    /* Has some other CPU caused a wrap? We must flush if so. */
 +    if ( map_idx < shadow_map_idx[cpu] )
 +    {
 +        perfc_incrc(domain_page_tlb_flush);
 +        local_flush_tlb();
 +    }
 +
 +    for ( ; ; )
 +    {
 +        idx = map_idx = (map_idx + 1) & (MAPCACHE_ENTRIES - 1);
 +        if ( idx == 0 ) flush_all_ready_maps();
 +        if ( cache[idx] == 0 ) break;
 +    }
 +
 +    cache[idx] = (pa & PAGE_MASK) | __PAGE_HYPERVISOR;
 +
 +    spin_unlock_irqrestore(&map_lock, flags);
 +
 +    shadow_map_idx[cpu] = idx;
 +
 +    va = MAPCACHE_VIRT_START + (idx << PAGE_SHIFT) + (pa & ~PAGE_MASK);
 +    return (void *)va;
 +}
 +
 +void unmap_domain_mem(void *va)
 +{
 +    unsigned int idx;
 +    idx = ((unsigned long)va - MAPCACHE_VIRT_START) >> PAGE_SHIFT;
 +    mapcache[idx] |= READY_FOR_TLB_FLUSH;
 +}
index 939acddc136c61c6b38af88f1ebd13371138af1d,f4b2ef4006a7168f6ace1e64c134a1e1eb8de3aa..6bcb901f3205ba0f0f43e5e4165a1a89cc2f76be
  #include <asm/i387.h>
  #include <asm/mpspec.h>
  #include <asm/ldt.h>
--
 -#include <xeno/irq.h>
 -#include <xeno/event.h>
 -#include <xeno/shadow.h>
 +#include <xen/irq.h>
 +#include <xen/event.h>
++#include <xen/shadow.h>
  
  int hlt_counter;
  
index 1c514aea23ac9c8f447e8c60d310d46610991279,f35e0c898d22acf247fb92f11edcdc0ccd7fb039..8ee67406d292eef9b62436539a8f5b524273b93c
   *    Gareth Hughes <gareth@valinux.com>, May 2000
   */
  
 -#include <xeno/config.h>
 -#include <xeno/init.h>
 -#include <xeno/interrupt.h>
 -#include <xeno/sched.h>
 -#include <xeno/lib.h>
 -#include <xeno/errno.h>
 -#include <xeno/mm.h>
 +#include <xen/config.h>
 +#include <xen/init.h>
 +#include <xen/interrupt.h>
 +#include <xen/sched.h>
 +#include <xen/lib.h>
 +#include <xen/errno.h>
 +#include <xen/mm.h>
  #include <asm/ptrace.h>
 -#include <xeno/delay.h>
 -#include <xeno/spinlock.h>
 -#include <xeno/irq.h>
 -#include <xeno/perfc.h>
 -#include <xeno/shadow.h>
 +#include <xen/delay.h>
 +#include <xen/spinlock.h>
 +#include <xen/irq.h>
 +#include <xen/perfc.h>
++#include <xen/shadow.h>
  #include <asm/domain_page.h>
  #include <asm/system.h>
  #include <asm/io.h>
Simple merge
index 1fd3dbc46bca322dd99a583c55182382127af7d1,b7087def0bc281cd59a7744c3bfffd3fbdbc657d..0783f7f838327d600bb4756a3a61e4c05b5bb962
@@@ -1,14 -1,15 +1,15 @@@
 -#include <xeno/config.h>
 -#include <xeno/init.h>
 -#include <xeno/lib.h>
 -#include <xeno/errno.h>
 -#include <xeno/sched.h>
 -#include <xeno/mm.h>
 -#include <xeno/skbuff.h>
 -#include <xeno/interrupt.h>
 -#include <xeno/delay.h>
 -#include <xeno/event.h>
 -#include <xeno/time.h>
 -#include <xeno/shadow.h>
 +#include <xen/config.h>
 +#include <xen/init.h>
 +#include <xen/lib.h>
 +#include <xen/errno.h>
 +#include <xen/sched.h>
 +#include <xen/mm.h>
 +#include <xen/skbuff.h>
 +#include <xen/interrupt.h>
 +#include <xen/delay.h>
 +#include <xen/event.h>
 +#include <xen/time.h>
++#include <xen/shadow.h>
  #include <hypervisor-ifs/dom0_ops.h>
  #include <asm/io.h>
  #include <asm/domain_page.h>
index 25e763f7c2f38fd2c5ee9502c500a9e804f38ccb,1737c722045decb714bc0f3aaf8c76fd9eb165ac..64ef966a3bf843188f12020885f6b23bb465e422
@@@ -193,25 -191,24 +194,26 @@@ void cmain(unsigned long magic, multibo
          for ( ; ; ) ;
      }
  
 -    frametable_pages = ((FRAMETABLE_VIRT_END - RDWR_MPT_VIRT_START)/sizeof(struct pfn_info));
 +    max_page = (mbi->mem_upper+1024) >> (PAGE_SHIFT - 10);
  
 -    if ( frametable_pages < (1<<(32-PAGE_SHIFT)) ) 
 +    /* The array of pfn_info structures must fit into the reserved area. */
-     if ( (sizeof(struct pfn_info) * max_page) > 
++    if ( (sizeof(struct pfn_info) * max_page) >
 +         (FRAMETABLE_VIRT_END - FRAMETABLE_VIRT_START) )
      {
-         unsigned long new_max = 
 -      printk("Not enough space to initialise frame table for a 4GB machine (%luMB only)\n", frametable_pages >> (20-PAGE_SHIFT));
++        unsigned long new_max =
 +            (FRAMETABLE_VIRT_END - FRAMETABLE_VIRT_START) /
 +            sizeof(struct pfn_info);
-       printk("Truncating available memory to %lu/%luMB\n", 
++        printk("Truncating available memory to %lu/%luMB\n",
 +               new_max >> (20 - PAGE_SHIFT), max_page >> (20 - PAGE_SHIFT));
-       max_page = new_max;
++        max_page = new_max;
      }
  
      set_current(&idle0_task);
  
 -    max_mem = max_page = (mbi->mem_upper+1024) >> (PAGE_SHIFT - 10);
 -
 -    if ( max_page > frametable_pages )
 -      max_page = frametable_pages;
 -
      init_frametable(max_page);
-     printk("Initialised all memory on a %luMB machine\n",
-            max_page >> (20-PAGE_SHIFT));
+     printk("Initialised %luMB memory on a %luMB machine\n",
+            max_page >> (20-PAGE_SHIFT),
+          max_mem  >> (20-PAGE_SHIFT) );
  
      heap_start = memguard_init(&_end);
  
index efd75883c18b3d4ee9609f19f65e92a06203aad4,1c547130060dc28f9466f3cefd2a5bc73b4d9fea..c8510c514da9fe189b7230edec304ebefc0bd696
   * to more aggressive flush types.
   */
  
 -#include <xeno/config.h>
 -#include <xeno/init.h>
 -#include <xeno/lib.h>
 -#include <xeno/mm.h>
 -#include <xeno/sched.h>
 -#include <xeno/errno.h>
 -#include <xeno/perfc.h>
 -#include <xeno/interrupt.h>
 -#include <xeno/shadow.h>
 +#include <xen/config.h>
 +#include <xen/init.h>
 +#include <xen/lib.h>
 +#include <xen/mm.h>
 +#include <xen/sched.h>
 +#include <xen/errno.h>
 +#include <xen/perfc.h>
 +#include <xen/interrupt.h>
++#include <xen/shadow.h>
  #include <asm/page.h>
  #include <asm/flushtlb.h>
  #include <asm/io.h>
@@@ -830,12 -847,26 +848,23 @@@ static int do_extended_command(unsigne
                                               CHECK_STRICT);
          if ( likely(okay) )
          {
 -            put_page_and_type(&frame_table[pagetable_val(current->mm.pagetable)
 -                                          >> PAGE_SHIFT]);
 -            current->mm.pagetable = mk_pagetable(pfn << PAGE_SHIFT);
 -
 -          if( unlikely(current->mm.shadow_mode))
 -            current->mm.shadow_table = 
 -              shadow_mk_pagetable(current, pfn<<PAGE_SHIFT);
 -
              invalidate_shadow_ldt();
 -          
 -          // start using the new PT straight away
++
              percpu_info[cpu].deferred_ops &= ~DOP_FLUSH_TLB;
 -            if ( unlikely(current->mm.shadow_mode) )
 -          {
 -                check_pagetable( current, 
 -                               current->mm.pagetable, "pre-stlb-flush" );
 -              write_cr3_counted(pagetable_val(current->mm.shadow_table));
 +            old_base_pfn = pagetable_val(current->mm.pagetable) >> PAGE_SHIFT;
 +            current->mm.pagetable = mk_pagetable(pfn << PAGE_SHIFT);
-             write_cr3_counted(pfn << PAGE_SHIFT);
-             put_page_and_type(&frame_table[old_base_pfn]);
++
++            if( unlikely(current->mm.shadow_mode))
++            {
++                current->mm.shadow_table = 
++                    shadow_mk_pagetable(current, pfn<<PAGE_SHIFT);
++                write_cr3_counted(pagetable_val(current->mm.shadow_table));
+             }
+             else
 -              write_cr3_counted(pagetable_val(current->mm.pagetable));
++            {
++                write_cr3_counted(pfn << PAGE_SHIFT);
++            }
++            put_page_and_type(&frame_table[old_base_pfn]);    
          }
          else
          {
index 20b0e5c116d6c229b75d4803ee441a2094b8b8f3,1d24c8fd0425ea7f96cb99a9bff33d98299e2a9a..631e81787c0598388194f6f26b966c036faacebd
  #define PERFCOUNTER( var, name )              { name, TYPE_SINGLE, 0 },
  #define PERFCOUNTER_CPU( var, name )          { name, TYPE_CPU,    0 },
  #define PERFCOUNTER_ARRAY( var, name, size )  { name, TYPE_ARRAY,  size },
+ #define PERFSTATUS( var, name )               { name, TYPE_S_SINGLE, 0 },
+ #define PERFSTATUS_CPU( var, name )           { name, TYPE_S_CPU,    0 },
+ #define PERFSTATUS_ARRAY( var, name, size )   { name, TYPE_S_ARRAY,  size },
  static struct {
      char *name;
-     enum { TYPE_SINGLE, TYPE_CPU, TYPE_ARRAY } type;
+     enum { TYPE_SINGLE, TYPE_CPU, TYPE_ARRAY,
+          TYPE_S_SINGLE, TYPE_S_CPU, TYPE_S_ARRAY
+     } type;
      int nr_elements;
  } perfc_info[] = {
 -#include <xeno/perfc_defn.h>
 +#include <xen/perfc_defn.h>
  };
  
  #define NR_PERFCTRS (sizeof(perfc_info) / sizeof(perfc_info[0]))
Simple merge
Simple merge
index 083a416a6fe0e4582d014713d98968a9fd9b1919,7cf48541efd52095ddb6954c7d967fce795a1fe0..08685b65a0b09238d3c08d482aeede60c1e7f9a7
@@@ -11,7 -11,8 +11,8 @@@
  #include <asm/types.h>
  #include <asm/cpufeature.h>
  #include <asm/desc.h>
 -#include <xeno/config.h>
 -#include <xeno/spinlock.h>
 +#include <xen/config.h>
++#include <xen/spinlock.h>
  #include <hypervisor-ifs/hypervisor-if.h>
  
  struct task_struct;
index b24412a3de723213b285cbc3062db71576a30549,0000000000000000000000000000000000000000..bc5a6362ea4fc1667530199b93c1d58c062d5115
mode 100644,000000..100644
--- /dev/null
@@@ -1,331 -1,0 +1,332 @@@
 +
 +#ifndef __XEN_MM_H__
 +#define __XEN_MM_H__
 +
 +#include <xen/config.h>
 +#include <xen/list.h>
 +#include <xen/spinlock.h>
 +#include <xen/perfc.h>
 +#include <xen/sched.h>
 +
 +#include <asm/pgalloc.h>
 +#include <asm/atomic.h>
 +#include <asm/desc.h>
 +#include <asm/flushtlb.h>
 +#include <asm/io.h>
 +
 +#include <hypervisor-ifs/hypervisor-if.h>
 +
 +/*
 + * These are for compatibility with calls to the Linux memory allocators.
 + */
 +
 +#define __GFP_DMA       0x01
 +#define GFP_DMA         __GFP_DMA
 +#define __GFP_WAIT      0x10    /* Can wait and reschedule? */
 +#define __GFP_HIGH      0x20    /* Should access emergency pools? */
 +#define __GFP_IO        0x40    /* Can start low memory physical IO? */
 +#define __GFP_HIGHIO    0x80    /* Can start high mem physical IO? */
 +#define __GFP_FS        0x100   /* Can call down to low-level FS? */
 +#define GFP_ATOMIC      (__GFP_HIGH)
 +#define GFP_KERNEL      (__GFP_HIGH | __GFP_WAIT | __GFP_IO | \
 +                         __GFP_HIGHIO | __GFP_FS)
 +
 +/*
 + * The following is for page_alloc.c.
 + */
 +
 +void init_page_allocator(unsigned long min, unsigned long max);
 +unsigned long __get_free_pages(int mask, int order);
 +void __free_pages(unsigned long p, int order);
 +#define get_free_page(_m) (__get_free_pages((_m),0))
 +#define __get_free_page(_m) (__get_free_pages((_m),0))
 +#define free_pages(_p,_o) (__free_pages(_p,_o))
 +#define free_page(_p) (__free_pages(_p,0))
 +
 +
 +/*
 + * Per-page-frame information.
 + */
 +
 +struct pfn_info
 +{
 +    /* Each frame can be threaded onto a doubly-linked list. */
 +    struct list_head list;
 +    /* The following possible uses are context-dependent. */
 +    union {
 +        /* Page is in use and not a zombie: we keep a pointer to its owner. */
 +        struct task_struct *domain;
 +        /* Page is not currently allocated: mask of possibly-tainted TLBs. */
 +        unsigned long cpu_mask;
 +        /* Page is a zombie: this word currently has no use. */
 +        unsigned long _unused;
 +    } u;
 +    /* Reference count and various PGC_xxx flags and fields. */
 +    unsigned long       count_and_flags;
 +    /* Type reference count and various PGT_xxx flags and fields. */
 +    unsigned long       type_and_flags;
 +    /* Timestamp from 'TLB clock', used to reduce need for safety flushes. */
 +    unsigned long       tlbflush_timestamp;
 +};
 +
 + /* The following page types are MUTUALLY EXCLUSIVE. */
 +#define PGT_none            (0<<29) /* no special uses of this page */
 +#define PGT_l1_page_table   (1<<29) /* using this page as an L1 page table? */
 +#define PGT_l2_page_table   (2<<29) /* using this page as an L2 page table? */
 +#define PGT_l3_page_table   (3<<29) /* using this page as an L3 page table? */
 +#define PGT_l4_page_table   (4<<29) /* using this page as an L4 page table? */
 +#define PGT_gdt_page        (5<<29) /* using this page in a GDT? */
 +#define PGT_ldt_page        (6<<29) /* using this page in an LDT? */
 +#define PGT_writeable_page  (7<<29) /* has writable mappings of this page? */
 +#define PGT_type_mask       (7<<29) /* Bits 29-31. */
 + /* Has this page been validated for use as its current type? */
 +#define _PGT_validated      28
 +#define PGT_validated       (1<<_PGT_validated)
 + /* 28-bit count of uses of this frame as its current type. */
 +#define PGT_count_mask      ((1<<28)-1)
 +
 + /* The owner of this page is dead: 'u.domain' is no longer valid. */
 +#define _PGC_zombie                   31
 +#define PGC_zombie                    (1<<_PGC_zombie)
 + /* For safety, force a TLB flush when this page's type changes. */
 +#define _PGC_tlb_flush_on_type_change 30
 +#define PGC_tlb_flush_on_type_change  (1<<_PGC_tlb_flush_on_type_change)
 + /* Owning guest has pinned this page to its current type? */
 +#define _PGC_guest_pinned             29
 +#define PGC_guest_pinned              (1<<_PGC_guest_pinned)
 + /* Cleared when the owning guest 'frees' this page. */
 +#define _PGC_allocated                28
 +#define PGC_allocated                 (1<<_PGC_allocated)
 + /* 28-bit count of references to this frame. */
 +#define PGC_count_mask                ((1<<28)-1)
 +
++
 +/* We trust the slab allocator in slab.c, and our use of it. */
 +#define PageSlab(page)                (1)
 +#define PageSetSlab(page)     ((void)0)
 +#define PageClearSlab(page)   ((void)0)
 +
 +#define IS_XEN_HEAP_FRAME(_pfn) (page_to_phys(_pfn) < MAX_MONITOR_ADDRESS)
 +
 +#define SHARE_PFN_WITH_DOMAIN(_pfn, _dom)                                  \
 +    do {                                                                   \
 +        (_pfn)->u.domain = (_dom);                                         \
 +        wmb(); /* install valid domain ptr before updating refcnt. */      \
 +        (_pfn)->count_and_flags = 1; /* Xen holds a writeable reference */ \
 +        (_pfn)->type_and_flags  = PGT_writeable_page | PGT_validated | 1;  \
 +    } while ( 0 )
 +
 +#define UNSHARE_PFN(_pfn) put_page_and_type(_pfn)
 +
 +extern struct pfn_info *frame_table;
 +extern unsigned long frame_table_size;
 +extern struct list_head free_list;
 +extern spinlock_t free_list_lock;
 +extern unsigned int free_pfns;
 +extern unsigned long max_page;
 +void init_frametable(unsigned long nr_pages);
 +
 +struct pfn_info *alloc_domain_page(struct task_struct *p);
 +void free_domain_page(struct pfn_info *page);
 +
 +int alloc_page_type(struct pfn_info *page, unsigned int type);
 +void free_page_type(struct pfn_info *page, unsigned int type);
 +
 +static inline void put_page(struct pfn_info *page)
 +{
 +    unsigned long nx, x, y = page->count_and_flags;
 +
 +    do {
 +        x  = y;
 +        nx = x - 1;
 +    }
 +    while ( unlikely((y = cmpxchg(&page->count_and_flags, x, nx)) != x) );
 +
 +    if ( unlikely((nx & PGC_count_mask) == 0) )
 +        free_domain_page(page);
 +}
 +
 +
 +static inline int get_page(struct pfn_info *page,
 +                           struct task_struct *domain)
 +{
 +    unsigned long x, nx, y = page->count_and_flags;
 +    struct task_struct *p, *np = page->u.domain;
 +
 +    do {
 +        x  = y;
 +        nx = x + 1;
 +        p  = np;
 +        if ( unlikely((x & PGC_count_mask) == 0) ||  /* Not allocated? */
 +             unlikely((nx & PGC_count_mask) == 0) || /* Count overflow? */
 +             unlikely(x & PGC_zombie) ||             /* Zombie? */
 +             unlikely(p != domain) )                 /* Wrong owner? */
 +        {
 +            DPRINTK("Error pfn %08lx: ed=%p,sd=%p,caf=%08lx\n",
 +                    page_to_pfn(page), domain, p, x);
 +            return 0;
 +        }
 +        __asm__ __volatile__(
 +            LOCK_PREFIX "cmpxchg8b %3"
 +            : "=a" (np), "=d" (y), "=b" (p),
 +              "=m" (*(volatile unsigned long long *)(&page->u.domain))
 +            : "0" (p), "1" (x), "b" (p), "c" (nx) );
 +    }
 +    while ( unlikely(np != p) || unlikely(y != x) );
 +
 +    return 1;
 +}
 +
 +
 +static inline void put_page_type(struct pfn_info *page)
 +{
 +    unsigned long nx, x, y = page->type_and_flags;
 +
 + again:
 +    do {
 +        x  = y;
 +        nx = x - 1;
 +        if ( unlikely((nx & PGT_count_mask) == 0) )
 +        {
 +            page->tlbflush_timestamp = tlbflush_clock;
 +            if ( unlikely((nx & PGT_type_mask) <= PGT_l4_page_table) &&
 +                 likely(nx & PGT_validated) )
 +            {
 +                /*
 +                 * Page-table pages must be unvalidated when count is zero. The
 +                 * 'free' is safe because the refcnt is non-zero and the
 +                 * validated bit is clear => other ops will spin or fail.
 +                 */
 +                if ( unlikely((y = cmpxchg(&page->type_and_flags, x, 
 +                                           x & ~PGT_validated)) != x) )
 +                    goto again;
 +                /* We cleared the 'valid bit' so we must do the clear up. */
 +                free_page_type(page, x & PGT_type_mask);
 +                /* Carry on as we were, but with the 'valid bit' now clear. */
 +                x  &= ~PGT_validated;
 +                nx &= ~PGT_validated;
 +            }
 +        }
 +    }
 +    while ( unlikely((y = cmpxchg(&page->type_and_flags, x, nx)) != x) );
 +}
 +
 +
 +static inline int get_page_type(struct pfn_info *page, unsigned long type)
 +{
 +    unsigned long nx, x, y = page->type_and_flags;
 + again:
 +    do {
 +        x  = y;
 +        nx = x + 1;
 +        if ( unlikely((nx & PGT_count_mask) == 0) )
 +        {
 +            DPRINTK("Type count overflow on pfn %08lx\n", page_to_pfn(page));
 +            return 0;
 +        }
 +        else if ( unlikely((x & PGT_count_mask) == 0) )
 +        {
 +            if ( (x & PGT_type_mask) != type )
 +            {
 +                nx &= ~(PGT_type_mask | PGT_validated);
 +                nx |= type;
 +                /* No extra validation needed for writeable pages. */
 +                if ( type == PGT_writeable_page )
 +                    nx |= PGT_validated;
 +            }
 +        }
 +        else if ( unlikely((x & PGT_type_mask) != type) )
 +        {
 +            DPRINTK("Unexpected type (saw %08lx != exp %08lx) for pfn %08lx\n",
 +                    x & PGT_type_mask, type, page_to_pfn(page));
 +            return 0;
 +        }
 +        else if ( unlikely(!(x & PGT_validated)) )
 +        {
 +            /* Someone else is updating validation of this page. Wait... */
 +            while ( (y = page->type_and_flags) != x )
 +            {
 +                rep_nop();
 +                barrier();
 +            }
 +            goto again;
 +        }
 +    }
 +    while ( unlikely((y = cmpxchg(&page->type_and_flags, x, nx)) != x) );
 +
 +    if ( unlikely(!(nx & PGT_validated)) )
 +    {
 +        /* Try to validate page type; drop the new reference on failure. */
 +        if ( unlikely(!alloc_page_type(page, type)) )
 +        {
 +            DPRINTK("Error while validating pfn %08lx for type %08lx\n",
 +                    page_to_pfn(page), type);
 +            put_page_type(page);
 +            return 0;
 +        }
 +        set_bit(_PGT_validated, &page->type_and_flags);
 +    }
 +
 +    return 1;
 +}
 +
 +
 +static inline void put_page_and_type(struct pfn_info *page)
 +{
 +    put_page_type(page);
 +    put_page(page);
 +}
 +
 +
 +static inline int get_page_and_type(struct pfn_info *page,
 +                                    struct task_struct *domain,
 +                                    unsigned int type)
 +{
 +    int rc = get_page(page, domain);
 +
 +    if ( likely(rc) && unlikely(!get_page_type(page, type)) )
 +    {
 +        put_page(page);
 +        rc = 0;
 +    }
 +
 +    return rc;
 +}
 +
 +#define ASSERT_PAGE_IS_TYPE(_p, _t)                \
 +    ASSERT(((_p)->type_and_flags & PGT_type_mask) == (_t));  \
 +    ASSERT(((_p)->type_and_flags & PGT_count_mask) != 0)
 +#define ASSERT_PAGE_IS_DOMAIN(_p, _d)              \
 +    ASSERT(((_p)->count_and_flags & PGC_count_mask) != 0);  \
 +    ASSERT((_p)->u.domain == (_d))
 +
 +int check_descriptor(unsigned long a, unsigned long b);
 +
 +/*
 + * The MPT (machine->physical mapping table) is an array of word-sized
 + * values, indexed on machine frame number. It is expected that guest OSes
 + * will use it to store a "physical" frame number to give the appearance of
 + * contiguous (or near contiguous) physical memory.
 + */
 +#undef  machine_to_phys_mapping
 +#define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START)
 +
 +/* Part of the domain API. */
 +int do_mmu_update(mmu_update_t *updates, int count);
 +
 +#define DEFAULT_GDT_ENTRIES     ((LAST_RESERVED_GDT_ENTRY*8)+7)
 +#define DEFAULT_GDT_ADDRESS     ((unsigned long)gdt_table)
 +
 +#ifdef MEMORY_GUARD
 +void *memguard_init(void *heap_start);
 +void memguard_guard_range(void *p, unsigned long l);
 +void memguard_unguard_range(void *p, unsigned long l);
 +int memguard_is_guarded(void *p);
 +#else
 +#define memguard_init(_s)              (_s)
 +#define memguard_guard_range(_p,_l)    ((void)0)
 +#define memguard_unguard_range(_p,_l)  ((void)0)
 +#define memguard_is_guarded(_p)        (0)
 +#endif
 +
 +#endif /* __XEN_MM_H__ */
index ad0b53eeb604a6e3d22d3bf154e93cad59d87ab2,0000000000000000000000000000000000000000..0f84c266dc25541d520c566b9c54faa61c8fcfad
mode 100644,000000..100644
--- /dev/null
@@@ -1,56 -1,0 +1,68 @@@
 +
 +#ifndef __XEN_PERFC_H__
 +#define __XEN_PERFC_H__
 +
 +#include <asm/atomic.h>
 +
 +/* 
 + * NOTE: new counters must be defined in perfc_defn.h
 + * 
 + * PERFCOUNTER (counter, string)              define a new performance counter
 + * PERFCOUNTER_CPU (counter, string, size)    define a counter per CPU
 + * PERFCOUNTER_ARRY (counter, string, size)   define an array of counters
 + * 
++ * unlike "COUNTERS", "STATUS" variables DO NOT RESET
++ * PERFSTATUS (counter, string)               define a new performance stauts
++ * PERFSTATUS_CPU (counter, string, size)     define a status var per CPU
++ * PERFSTATUS_ARRY (counter, string, size)    define an array of status vars
++ * 
 + * unsigned long perfc_value  (counter)        get value of a counter  
 + * unsigned long perfc_valuec (counter)        get value of a per CPU counter
 + * unsigned long perfc_valuea (counter, index) get value of an array counter
 + * unsigned long perfc_set  (counter, val)     set value of a counter  
 + * unsigned long perfc_setc (counter, val)     set value of a per CPU counter
 + * unsigned long perfc_seta (counter, index, val) set value of an array counter
 + * void perfc_incr  (counter)                  increment a counter          
 + * void perfc_incrc (counter, index)           increment a per CPU counter   
 + * void perfc_incra (counter, index)           increment an array counter   
 + * void perfc_add   (counter, value)           add a value to a counter     
 + * void perfc_addc  (counter, value)           add a value to a per CPU counter
 + * void perfc_adda  (counter, index, value)    add a value to array counter 
 + * void perfc_print (counter)                  print out the counter
 + */
 +
 +#define PERFCOUNTER( var, name ) \
 +  atomic_t var[1];
 +#define PERFCOUNTER_CPU( var, name ) \
 +  atomic_t var[NR_CPUS];
 +#define PERFCOUNTER_ARRAY( var, name, size ) \
 +  atomic_t var[size];
++#define PERFSTATUS( var, name ) \
++  atomic_t var[1];
++#define PERFSTATUS_CPU( var, name ) \
++  atomic_t var[NR_CPUS];
++#define PERFSTATUS_ARRAY( var, name, size ) \
++  atomic_t var[size];
 +
 +struct perfcounter_t 
 +{
 +#include <xen/perfc_defn.h>
 +};
 +
 +extern struct perfcounter_t perfcounters;
 +
 +#define perfc_value(x)    atomic_read(&perfcounters.x[0])
 +#define perfc_valuec(x)   atomic_read(&perfcounters.x[smp_processor_id()])
 +#define perfc_valuea(x,y) atomic_read(&perfcounters.x[y])
 +#define perfc_set(x,v)    atomic_set(&perfcounters.x[0], v)
 +#define perfc_setc(x,v)   atomic_set(&perfcounters.x[smp_processor_id()], v)
 +#define perfc_seta(x,y,v) atomic_set(&perfcounters.x[y], v)
 +#define perfc_incr(x)     atomic_inc(&perfcounters.x[0])
++#define perfc_decr(x)     atomic_dec(&perfcounters.x[0])
 +#define perfc_incrc(x)    atomic_inc(&perfcounters.x[smp_processor_id()])
 +#define perfc_incra(x,y)  atomic_inc(&perfcounters.x[y])
 +#define perfc_add(x,y)    atomic_add((y), &perfcounters.x[0])
 +#define perfc_addc(x,y)   atomic_add((y), &perfcounters.x[smp_processor_id()])
 +#define perfc_adda(x,y,z) atomic_add((z), &perfcounters.x[y])
 +
 +#endif /* __XEN_PERFC_H__ */
index f81b5bcba19d770e82189674521e0a1866e29086,0000000000000000000000000000000000000000..bf06719e355e39b58d9fce5b07e6b33e19159a4f
mode 100644,000000..100644
--- /dev/null
@@@ -1,24 -1,0 +1,35 @@@
 +
 +PERFCOUNTER_CPU( irqs,         "#interrupts" )
 +PERFCOUNTER_CPU( irq_time,     "cycles spent in irq handler" )
 +
 +PERFCOUNTER_CPU( apic_timer,   "apic timer interrupts" )
 +PERFCOUNTER_CPU( ac_timer_max, "ac_timer max error (ns)" )
 +PERFCOUNTER_CPU( sched_irq,    "sched: timer" )
 +PERFCOUNTER_CPU( sched_run,    "sched: runs through scheduler" )
 +PERFCOUNTER_CPU( sched_ctx,    "sched: context switches" )
 +
 +PERFCOUNTER( net_hypercalls, "network hypercalls" )
 +PERFCOUNTER( net_rx_congestion_drop, "net rx congestion drops" )
 +PERFCOUNTER( net_rx_capacity_drop, "net rx capacity drops" )
 +PERFCOUNTER( net_rx_delivered, "net rx delivered" )
 +PERFCOUNTER( net_tx_transmitted, "net tx transmitted" )
 +
 +PERFCOUNTER_CPU( domain_page_tlb_flush, "domain page tlb flushes" )
 +PERFCOUNTER_CPU( need_flush_tlb_flush, "PG_need_flush tlb flushes" )
 +
 +PERFCOUNTER_CPU( calls_to_mmu_update, "calls_to_mmu_update" )
 +PERFCOUNTER_CPU( num_page_updates, "num_page_updates" )
++PERFCOUNTER_CPU( calls_to_update_va, "calls_to_update_va_map" )
++PERFCOUNTER_CPU( page_faults, "page faults" )
++PERFCOUNTER_CPU( copy_user_faults, "copy_user faults" )
++PERFCOUNTER_CPU( map_domain_mem_count, "map_domain_mem count" )
++
++PERFCOUNTER_CPU( shadow_l2_table_count, "shadow_l2_table count" )
++PERFCOUNTER_CPU( shadow_l1_table_count, "shadow_l1_table count" )
++PERFCOUNTER_CPU( unshadow_table_count, "unshadow_table count" )
++PERFCOUNTER_CPU( shadow_fixup_count, "shadow_fixup count" )
++PERFCOUNTER_CPU( shadow_update_va_fail, "shadow_update_va_fail" )
++
++/* STATUS counters do not reset when 'P' is hit */
++PERFSTATUS( shadow_l2_pages, "current # shadow L2 pages" )
++PERFSTATUS( shadow_l1_pages, "current # shadow L1 pages" )
diff --cc xen/net/dev.c
index 05d474f98bf7aa3abdcb6fe2b7ed4842ceba5daa,5d692f51f4db9f5321936e740410a73fb90ea51e..e7e277f5e5dd0e49c7a468b6738c9faa42996ffd
  #include <asm/uaccess.h>
  #include <asm/system.h>
  #include <asm/bitops.h>
 -#include <xeno/config.h>
 -#include <xeno/delay.h>
 -#include <xeno/lib.h>
 -#include <xeno/types.h>
 -#include <xeno/sched.h>
 -#include <xeno/mm.h>
 -#include <xeno/socket.h>
 -#include <xeno/sockios.h>
 -#include <xeno/errno.h>
 -#include <xeno/interrupt.h>
 -#include <xeno/if_ether.h>
 -#include <xeno/netdevice.h>
 -#include <xeno/etherdevice.h>
 -#include <xeno/skbuff.h>
 -#include <xeno/brlock.h>
 -#include <xeno/init.h>
 -#include <xeno/module.h>
 -#include <xeno/event.h>
 -#include <xeno/shadow.h>
 +#include <xen/config.h>
 +#include <xen/delay.h>
 +#include <xen/lib.h>
 +#include <xen/types.h>
 +#include <xen/sched.h>
 +#include <xen/mm.h>
 +#include <xen/socket.h>
 +#include <xen/sockios.h>
 +#include <xen/errno.h>
 +#include <xen/interrupt.h>
 +#include <xen/if_ether.h>
 +#include <xen/netdevice.h>
 +#include <xen/etherdevice.h>
 +#include <xen/skbuff.h>
 +#include <xen/brlock.h>
 +#include <xen/init.h>
 +#include <xen/module.h>
 +#include <xen/event.h>
++#include <xen/shadow.h>
  #include <asm/domain_page.h>
  #include <asm/pgalloc.h>
  #include <asm/io.h>